Módulo:ComicsInfobox/Raça
local valid = { "Abaddonusiano" = "Abaddonusianos", "Acheroniano" = "Acheronianos", "Aegenano" = "Aegenanos", "Aellano" = "Aellanos", "Aelphiano" = "Aelphianos", "Aerosiano" = "Aerosianos", "Aesiro" = "Aesiros", "Alephiano" = "Alephianos", "Jacaré" = "Jacarés", "Almeraciano" = "Almeracianos", "Alstairiano" = "Alstairianos", "Altrosiano" = "Altrosianos", "Amadusiano" = "Amadusianos", "Amazona" = "Amazonas", "Andróide" = "Andróides", "Anjo" = "Anjos", "Angoriano" = "Angorianos", "Angtuano" = "Angtuanos", "Animal" = "Animais", "Annunake" = "Annunake", "Antareano" = "Antareanos", "Apiatoniano" = "Apiatonianos", "Apokoliptiano" = "Apokoliptianos", "Archai" = "Os Archai", "Argoan" = "Argoanos", "Arguvian" = "Arguvianos", "Asgardiano" = "Asgardianos", "Atlante" = "Atlantes", "Aviano" = "Avianos", "Avaloniano" = "Avalonianos", "Azarathiano" = "Azarathianos", "Baalduriano" = "Baaldurianos", "Baaltariano" = "Baaltarianos", "Urso" = "Ursos", "Bellatrixiano" = "Bellatrixianos", "Betrassiano" = "Betrassianos", "Bgztliano" = "Bgztlianos", "Binderaaniano" = "Binderaanianos", "Pássaro" = "Pássaros", "Bismolliano" = "Bismollianos", "Bizarro" = "Bizarros", "Blue" = "Blues", "Bolovaxiano" = "Bolovaxianos", "Borgoniano" = "Borgonianos", "Borialosaurus" = "Borialosauruses", "Braaliano" = "Braalianos", "Branx" = "Branx", da Nova Gênese" = "Insetos da Nova Gênese", "Bummb'l" = "Bummb'ls", "Byrniano" = "Byrnianos", "Cairniano" = "Cairnianos", "Calatoniano" = "Calatonianos", "Canopeano" = "Canopeanos", "Carggite" = "Carggites", "Gato" = "Gatos", Celta" = "Deuses Celtas", "Centauro" = "Centauros", "Changralyniano" = "Changralynianos", "Chimpanzé" = "Chimpanzés", "Chthostosiano" = "Chthostosianos", "Cintosiano" = "Cintosianos", "Circadiano" = "Circadianos", "Cironieliano" = "Cironielianos", "Citadeliano" = "Citadelianso", "Coluano" = "Coluanos", "Coludroide" = "Coludroides", "Competalian" = "Competalianos", "Vaca" = "Vacas", "Curatti" = "Curatti", "Ciborgue" = "Ciborgues", "Ciclope" = "Ciclopes", "Cygniano" = "Cygnianos", "Czarniano" = "Czarnianos", "Daemonita" = "Daemonitas", "Dalwythiano" = "Dalwythanos", "Daxamita" = "Daxamitas", "Cervo" = "Cervos", "Demônio" = "Demônios", "Semideus" = "Semideuses", "Dheroniano" = "Dheronianos", "Dhoriano" = "Dhorianos", "Diib" = "Diibs", "Diasporano" = "Diasporanos", "Cachorro" = "Cachorros", "Cão" = "Cachorros", "Cadela" = "Cachorros", "Dokris" = "Dokris", "Golfinho" = "Golfinhos", "Dominador" = "Dominadores", "Doopa" = "Doopas", "Draaga" = "Draagas", "Dragão" = "Dragões", "Dríade" = "Dríades", "Pato" = "Patos", "Durlan" = "Durlanos", "Anão" = "Anões", "Anã" = "Anões", "Egregore" = "Egregores", "Eigessano" = "Eigessanos", "Elefante" = "Elefantes", "Enelsiano" = "Enelsianos", "Erinyes" = "Erinyes", "Euforiano" = "Euforianos", "Exxoriano" = "Exxorianos", "Fábula" = "Fábulas", "Fada" = "Fadas", de fogo" = "Trolls de fogo", "Peixe" = "Peixes", "Fluviaat" = "Fluviaats", "Precursor" = "Precursores", "Fp'yian" = "Fp'yians", "Fresishian" = "Fresishians", "Sapo" = "Sapos", "Fwangiano" = "Fwangianos", "G'Newtiano" = "G'Newtianos", "Gargareano" = "Gargareanos", "Gárgula" = "Gárgulas", "Geequoano" = "Geequoanos", "Gil'Dishpano" = "Gil'Dishpanos", "Glazzoniono" = "Glazzonionos", "Cabra" = "Cabras", "Gobdoriano" = "Gobdorianos", "Deus" = "Deuses", de África" = "Deuses de África", do EgitoGod of Egypt" = "Deuses do Egito", do México" = "Deuses do México", "Gordaniano" = "Gordanianos", "Gorgona" = "Gorgonas", "Gorila" = "Gorilas", "Graxosiano" = "Graxosianos", "Grendano" = "Grendanos", "Marmota" = "Marmotas", "Grxyoriano" = "Grxyorianos", "Gryxiano" = "Gryxianos", "H'lvenite" = "H'lvenites", "Hajoriano" = "Hajorianos", "Hatoriano" = "Hatorianos", "Havaniano" = "Havanianos", Falcão" = "Homens Falcão", "Hecatonchire" = "Hecatonchires", "Hepvestusano" = "Hepvestusanos", Hindus" = "Deuses Hindus", "Hipopótamo" = "Hipopótamos", Magi" = "Homo Magi", "Cavalo" = "Cavalos", "Humano" = "Humanos", Híbrido" = "Humano/Alienígenas Híbrido", Híbrido" = "Humano/Demônios Híbrido", "Hiena" = "Hienas", "Hykraiano" = "Hykraianos", "Impo" = "Impos", "Imskiano" = "Imskianos", "I'noxiano" = "I'noxianos", "Janusiano" = "Janusianos", "Jaquaano" = "Jaquaanos", "Jaydiano" = "Jaydianos", "Kaffariano" = "Kaffarianos", "Kahloano" = "Kahloanos", "Kalanoriano" = "Kalanorianos", "Kamburu" = "Kamburus", "Canguru" = "Cangurus", "Karnano" = "Karnanos", "Karrakanian" = "Karrakanianos", "Katarthano" = "Katarthanos", "Kathooniano" = "Kathoonianos", "Kherubim" = "Kherubim", "Khund" = "Khunds", "Klarmariano" = "Klarmarianos", "Korugarano" = "Korugaranos", "Kranaltiniano" = "Kranaltinianos", "Kroloteano" = "Kroloteanos", "Kryptoniano" = "Kryptonianos", Kryptoniano" = "Caninos Kryptonianos", Kryptoniano" = "Deuses Kryptoniano", "Kwai" = "Kwai", "Lalloriano" = "Lallorianos", "Lanothiano" = "Lanothianos", "Lêmure" = "Lêmures", "Lexoriano" = "Lexorianos", "Ligre" = "Ligres", "Lilliputiano" = "Lilliputianos", "Leão" = "Leões", "Lisnariano" = "Lisnarianos", de Vida" = "Estrelas de Vida", "Lizarkono" = "Lizarkonos", "Llarano" = "Llaranos", "Loraneano" = "Loraneanos", "Lurkero" = "Lurkeros", "Makkorano" = "Makkoranos", "Maltusiano" = "Maltusianos", "Manatee" = "Manatees", "Manhawk" = "Homens Falcão", "Caçador" = "Caçadores", "Markiano" = "Markianos", "Marciano" = "Marcianos", "Megano" = "Meganos", "Mercuriano" = "Mercurianos", "Sereiano" = "Sereianos", "Metahumano" = "Metahumanos", "Metano" = "Metanos", "Minotauro" = "Minotauros", "Mangusto" = "Mangustos", "Monitor" = "Monitores", "Macaco" = "Macacos", "Alce" = "Alces", "Mosteeliano" = "Mosteelianos", "Motusiano" = "Motusianos", "Rato" = "Ratos", "Muldroogano" = "Muldrooganos", "Múmia" = "Múmias", "Murriano" = "Murrians", "Muscarian" = "Muscarianos", "Mutante" = "Mutantes", "Myrg" = "Myrgs", "N'cronian" = "N'cronians", "Naktosian" = "Naktosians", "Naltorian" = "Naltorians", "Neanderthal" = "Neanderthals", "Nekromnian" = "Nekromnians", "Neonian" = "Neonians", "Neptunian" = "Neptunians", Asgardian" = "New Asgardians", God" = "New Gods", "Ngoan" = "Ngoans", "Noc'sagian" = "Noc'sagians", "Norman" = "Norman", "Numericonian" = "Numericonians", "Oan" = "Oans", "Obsidian-Folk" = "Obsidian-Folk", "Octopus" = "Octopuses", "Ogre" = "Ogres", "Okaaran" = "Okaarans", God" = "Old Gods", "Olympian" = "Olympians", "Orandan" = "Orandans", "Oranxian" = "Oranxians", "Orazan" = "Orazans", "Ovacronian" = "Ovacronians", "Owl" = "Owls", "Ozimanian" = "Ozimanians", "Ozyronian" = "Ozyronians", "Parademon" = "Parademons", "Pegacorn" = "Pegacorns", "Pegasus" = "Pegasi", "Pharman" = "Pharmans", "Phlonian" = "Phlonians", "Phytarian" = "Phytarians", "Pig" = "Pigs", "Plutonian" = "Plutonians", "Preztorian" = "Preztorians", "Protean" = "Proteans", "Psion" = "Psions", Person" = "Pumice People", "Punkusian" = "Punkusians", "Qwardian" = "Qwardians", "Rabbit" = "Rabbits", "Rannian" = "Rannians", "Rat" = "Rats", "Reach" = "The Reach", Saturnian" = "Red Saturnians", Saturnian" = "White Saturnians", "Saturnian" = "Saturnians", "Reptile" = "Reptiles", "Rhoonian" = "Rhoonians", "Rhormorid" = "Rhormorids", "Rimborian" = "Rimborians", "Robot" = "Robots", "Roguian" = "Roguians", "Rojiran" = "Rojirans", "Satyr" = "Satyrs", "Savothian" = "Savothians", "Selachian" = "Selachians", "Simballian" = "Simballians", "Shark" = "Sharks", "Shayol" = "Shayol", "Sheeda" = "Sheeda", "Sher'Hedeen" = "Sher'Hedeens", "Shwarian" = "Shwarians", "Siamgemian" = "Siamgemians", "Sirkian" = "Sirkians", "Sklarian" = "Sklarians", "Skor" = "Skors", "Skrull" = "Skrulls", Kanga" = "Sky Kangas", "Slyggian" = "Slyggians", "Solarian" = "Solarians", "Somahturan" = "Somahturans", "Spitroid" = "Spitroids", "Squirrel" = "Squirrels", "Starhavenite" = "Starhavenites", "Stratan" = "Stratans", "Suirpalamanian" = "Suirpalamanians", "Sun-Eater" = "Sun-Eaters", "Synriannaquian" = "Synriannaquians", "Talokite" = "Talokites", "Talynian" = "Talynians", "Tamaranean" = "Tamaraneans", "Tamojoranian" = "Tamojoranians", "Tanjentan" = "Tanjentans", "Tartarian" = "Tartarians", "Tchk-Tchk" = "Tchk-Tchks", "Teallian" = "Teallians", "Terminan" = "Terminans", "Terran" = "Terrans", "Thanagarian" = "Thanagarians", "Tharrian" = "Tharrians", "Tiger" = "Tigers", of Myth" = "Titans of Myth", "Titanian" = "Titanians", "Toomeyan" = "Toomeyans", "Tormock" = "Tormocks", "Tortugan" = "Tortugans", "Tree" = "Trees", "Trewskian" = "Trewskians", "Tritonian" = "Tritonians", Mammoth" = "Trogkian Mammoths", "Trommite" = "Trommites", "Trontian" = "Trontians", "Tsauronian" = "Tsauronians", "Turtle" = "Turtles", "Tyrrazian" = "Tyrrazians", "Ungaran" = "Ungarans", "Unicorn" = "Unicorns", "Un-Man" = "Un-Men", "Uxorian" = "Uxorians", "Valeronian" = "Valeronians", "Valkyrie" = "Valkyries", "Vampire" = "Vampires", "Van'nian" = "Van'nians", "Varidian" = "Varidians", "Varvan" = "Varvans", "Venegarian" = "Venegarians", "Venturan" = "Venturans", "Venusian" = "Venusians", "Volkregian" = "Volkregians", "Voranian" = "Voranians", "Vornian" = "Vornians", "Vulcan" = "Vulcans", "Vuldarian" = "Vuldarians", "Vyrgan" = "Vyrgans", "Weasel" = "Weasels", "Werewolf" = "Werewolves", "Whale" = "Whales", Martian" = "White Martians", "Winathian" = "Winathians", "Wolf" = "Wolves", "Xanshian" = "Xanshians", "Xanthuan" = "Xanthuans", "Xarapion" = "Xarapions", "Xardan" = "Xardans", "Xenusian" = "Xenusians", "Xibalban" = "Xibalbans", "Xudarian" = "Xudarians", "Yodix" = "The Yodix", "Youngenian" = "Youngenians", "Zadronian" = "Zadronians", "Zamaron" = "Zamarons", "Zambaii" = "Zambaii", "Zarolatt" = "Zarolatts", "Zaronian" = "Zaronians", "Zaroxian" = "Zaroxians", "Zeroxian" = "Zeroxians", "Zezzite" = "Zezzites", "Zoan" = "Zoans", "Zombie" = "Zombies", "Zsiglonian" = "Zsiglonians", "Zuunian" = "Zuunians", "Zwenian" = "Zwenians", "Zymian" = "Zymians", } local substitutes = { "abaddonusians" = "Abaddonusian", "acheronians" = "Acheronian", "aegenans" = "Aegenan", "aellan" = "Aellan", "aerosians" = "Aerosian", "aisir" = "Aesir", "alephians" = "Alephian", "aelphians" = "Alephian", "alligators" = "Alligator", "almeracians" = "Almeracian", "alstairians" = "Alstairian", "altrosians" = "Altrosian", "asir" = "Aesir", "amadusians" = "Amadusian", "amazons" = "Amazon", "androids" = "Android", "animal" = "Animal", "angels" = "Angel", "angorians" = "Angorian", "angor" = "Angorian", "angtuans" = "Angtuan", "annunake" = "Annunake", "antareans" = "Antarean", "apiatonians" = "Apiatonian", "apokalptian" = "Apokoliptian", "apocalyptian" = "Apokoliptian", archai" = "Archai", "argoans" = "Argoan", "arguvians" = "Arguvian", "asgardan" = "Asgardian", "azgardian" = "Asgardian", "atlanteans" = "Atlantean", "atlantians" = "Atlantean", "atlantian" = "Atlantean", "avians" = "Avian", "avalonians" = "Avalonian", "azarathians" = "Azarathian", "baaldurians" = "Baaldurian", "baalterian" = "Baaltarian", "baltarian" = "Baaltarian", "bears" = "Bear", "belatrixan" = "Bellatrixian", "belatrixian" = "Bellatrixian", "betrassians" = "Betrassian", "bgtzlian" = "Bgztlian", "bgztlan" = "Bgztlian", "binderaanians" = "Binderaanian", "birds" = "Bird", "bismollians" = "Bismollian", "bizzaro" = "Bizarro", "bizzarro" = "Bizarro", "bizaro" = "Bizarro", "blues" = "Blue", "bolovaxians" = "Bolovaxian", "borgonians" = "Borgonian", "borialosauruses" = "Borialosaurus", "braalians" = "Braalian", "branx" = "Branx", "bug" = "Bug of New Genesis", of new genesis" = "Bug of New Genesis", "bummb'ls" = "Bummb'l", "byrnians" = "Byrnian", "cairnians" = "Cairnian", "calatonians" = "Calatonian", "canopeans" = "Canopean", "carggites" = "Carggite", "cats" = "Cat", gods" = "Celtic God", "centaurs" = "Centaur", "changralynians" = "Changralynian", "chimpanzees" = "Chimpanzee", "chimp" = "Chimpanzee", "chimps" = "Chimpanzee", "chthostosians" = "Chthostosian", "cintosians" = "Cintosian", "circadians" = "Circadian", "cironielians" = "Cironielian", "citadelians" = "Citadelian", "coluans" = "Coluan", "coludroids" = "Coludroid", "competalians" = "Competalian", "cows" = "Cow", "curatti" = "Curatti", "cyborg" = "Cyborg", "cyborgs" = "Cyborg", "cyclopes" = "Cyclops", "cygnians" = "Cygnian", "cazarnan" = "Czarnian", "czarnians" = "Czarnian", "daemonites" = "Daemonite", "dalwythians" = "Dalwythian", "daxam" = "Daxamite", "daxamites" = "Daxamite", "deer" = "Deer", "demon" = "Demons", "demons" = "Demons", "demigod" = "Demigods", "dheronians" = "Dheronian", "dhoran" = "Dhorian", "diibs" = "Diib", "diasporans" = "Diasporan", "dogs" = "Dog", "dokris" = "Dokris", "dolphins" = "Dolphin", "dominators" = "Dominator", "doopas" = "Doopa", "dragaas" = "Draaga", "dragons" = "Dragon", "dryads" = "Dryad", "ducks" = "Duck", "durlian" = "Durlan", "dwarves" = "Dwarf", "dwarfs" = "Dwarf", "egregores" = "Egregore", "eigessans" = "Eigessan", "elephants" = "Elephant", "enelsians" = "Enelsian", "erinyes" = "Erinyes", "euphorians" = "Euphorian", "exorian" = "Exxorian", "exxorrian" = "Exxorian", "exoran" = "Exxorian", "exxoran" = "Exxorian", "fables" = "Fable", "fable" = "Fable", "fairies" = "Fairy", trolls" = "Fire Troll", "fish" = "Fish", "fishes" = "Fish", "fluviaats" = "Fluviaat", "forerunners" = "Forerunner", "fp'yians" = "Fp'yian", "frogs" = "Frog", "fresishians" = "Fresishian", "fwangians" = "Fwangian", "g'newt" = "G'Newtian", "g'newtians" = "G'Newtian", "gargareans" = "Gargarean", "gargoyles" = "Gargoyle", "geequoans" = "Geequoan", "gil'dishpan" = "Gil'Dishpan", "glazzonians" = "Glazzonion", "glazzonions" = "Glazzonion", "goats" = "Goat", "gobdorians" = "Gobdorian", "gods" = "God", of africa" = "God of Africa", gods" = "God of Africa", of egypt" = "God of Egypt", gods" = "God of Egypt", of mexico" = "Gods of Mexico", gods" = "Gods of Mexico", "gordanians" = "Gordanian", "gorgons" = "Gorgon", "gorillas" = "Gorilla", "graxosians" = "Graxosian", "grendans" = "Grendan", "groundhogs" = "Groundhog", "grxyorians" = "Grxyorian", "gryxians" = "Gryxian", "h'lven" = "H'lvenite", "h'lvenites" = "H'lvenite", "hajorians" = "Hajorian", "hatorians" = "Hatorian", "havanians" = "Havanian", "havania" = "Havanian", "hawkmen" = "Hawkmen", "hecatonchires" = "Hecatonchire", "hepvestusans" = "Hepvestusan", gods" = "Hindu God", "hippopotamuses" = "Hippopotamus", "homomagi" = "Homo Magi", "homomagian" = "Homo Magi", magian" = "Homo Magi", "horses" = "Horse", being" = "Human", beings" = "Human", "humans" = "Human", "human" = "Human", hybrid" = "Human/Alien Hybrids", hybrids" = "Human/Alien Hybrids", hybrid" = "Human/Demon Hybrids", hybrids" = "Human/Demon Hybrids", "hyenas" = "Hyena", "hykraians" = "Hykraian", "imps" = "Imp", "imskians" = "Imskian", "i'noxians" = "I'noxian", "jaden" = "Jaydian", "jadian" = "Jaydian", "janusians" = "Janusian", "jaquaans" = "Jaquaan", "jayden" = "Jaydian", "jaydan" = "Jaydian", "kaffarians" = "Kaffarian", "kahloans" = "Kahloan", "kalanoran" = "Kalanorian", "kamburus" = "Kamburu", "kangaroos" = "Kangaroo", "karnans" = "Karnan", "karrakanians" = "Karrakanian", "katarthans" = "Katarthan", "kathoonians" = "Kathoonian", "kherubim" = "Kherubim", "khundia" = "Khund", "khunds" = "Khund", "klarmarians" = "Klarmarian", "korgu" = "Korugaran", "korugar" = "Korugaran", "korugarian" = "Korugaran", "kranaltinians" = "Kranaltinian", "kroloteans" = "Krolotean", "kriptonan" = "Kryptonian", "kriptonian" = "Kryptonian", "kryptonan" = "Kryptonian", "kryptonian" = "Kryptonian", canine" = "Kryptonian Canines", god" = "Kryptonian Gods", "kwai" = "Kwai", "lallorians" = "Lallorian", "lanothians" = "Lanothian", "lemurs" = "Lemur", "lexoran" = "Lexorian", "lexorian" = "Lexorian", "ligers" = "Liger", "lilliputians" = "Lilliputian", "lions" = "Lion", "lisnarians" = "Lisnarians", stars" = "Living Star", "lizarkons" = "Lizarkon", "llarans" = "Llaran", "loraneans" = "Loranean", "lurkers" = "Lurker", "makkorans" = "Makkoran", "maltusians" = "Maltusian", "maltus" = "Maltusian", "manatees" = "Manatee", "manhawks" = "Manhawk", "manhunter" = "Manhunter", hunter" = "Manhunter", hunters" = "Manhunter", " = "Manhunter", "man-hunters" = "Manhunter", "markians" = "Markian", "marsian" = "Martian", " = "Martian", " = "Martian", "martians" = "Martian", "meganian" = "Megan", "mercurians" = "Mercurian", "mermaid" = "Merpeople", "merman" = "Merpeople", "merpeople" = "Merpeople", "metahuman" = "Metahuman", "metans" = "Metan", "mice" = "Mouse", "minotaurs" = "Minotaur", "mongooses" = "Mongoose", "monitors" = "Monitor", "monkeys" = "Monkey", "moose" = "Moose", "mosteelians" = "Mosteelian", "motusians" = "Motusian", "muldroogans" = "Muldroogan", "mummies" = "Mummy", "murrians" = "Murrian", "muscaran" = "Muscarian", "mutants" = "Mutant", "mutant" = "Mutant", "myrgs" = "Myrg", "n'cronians" = "N'cronian", asgardians" = "New Asgardian", genesis bug" = "Bug of New Genesis", genesis bugs" = "Bug of New Genesis", "nacktosian" = "Naktosian", "naktosan" = "Naktosian", "naltoran" = "Naltorian", "neanderthals" = "Neanderthal", "nekromnians" = "Nekromnian", "neonians" = "Neonian", "neptunians" = "Neptunian", genesis" = "New Gods", gods" = "New God", "new-god" = "New God", "new-gods" = "New God", "ngoans" = "Ngoan", "noc'sagians" = "Noc'sagian", "norman" = "Norman", "numericonians" = "Numericonian", "oanian" = "Oan", "oans" = "Oan", "obsidian-folk" = "Obsidian-Folk", "octopuses" = "Octopus", "ogres" = "Ogre", "okaran" = "Okaaran", "okarian" = "Okaaran", "okaarian" = "Okaaran", gods" = "Old God", "olympians" = "Olympian", gods" = "Olympian", of olympus" = "Olympian", "orandans" = "Oradan", "oranxians" = "Oranxian", "orazans" = "Orazan", "ovacronians" = "Ovacronian", "owls" = "Owl", "ozimanians" = "Ozimanian", "ozyronians" = "Ozyronian", "parademons" = "Parademon", "pegacorns" = "Pegacorn", "pegasi" = "Pegasus", "pharmans" = "Pharman", "phlonians" = "Phlonian", "phytarians" = "Phytarian", "pigs" = "Pig", "plutonians" = "Plutonian", "preztorians" = "Preztorian", "proteans" = "Protean", "psions" = "Psion", "pumician" = "Pumice Person", "pumice" = "Pumice Person", people" = "Pumice Person", "pumican" = "Pumice Person", "punkusians" = "Punkusian", "qwardians" = "Qwardian", "rabbits" = "Rabbit", "ranian" = "Rannian", "raanian" = "Rannian", "rannan" = "Rannian", "rann" = "Rannian", "rats" = "Rat", reach" = "Reach", saturnians" = "Red Saturnian", saturnians" = "White Saturnian", "saturnians" = "Saturnian", "reptiles" = "Reptile", "rhoonians" = "Rhoonian", "rhormorids" = "Rhormorid", "rimboran" = "Rimborian", "rimborians" = "Rimborian", "robots" = "Robot", "roguians" = "Roguian", "rojirans" = "Rojiran", "satyrs" = "Satyr", "slavothian" = "Savothian", " = "Savothian", "savothan" = "Savothian", "selachians" = "Selachian", "sharks" = "Shark", "shayol" = "Shayol", "sheeda" = "Sheeda", "sher'hedeens" = "Sher'Hedeen", "shwarians" = "Shwarian", "siamgemians" = "Siamgemian", "simballians" = "Simballian", "sirkians" = "Sirkian", "sklarians" = "Sklarian", "skors" = "Skor", "skrulls" = "Skrull", kangas" = "Sky Kanga", "slyggians" = "Slyggian", "solarians" = "Solarian", "somahturans" = "Somahturan", "spitroid" = "Spitroid", "spitroid" = "Spitroid", "squirrels" = "Squirrel", "starhavenite" = "Starhavenites", "stratans" = "Stratan", "suirpalamanians" = "Suirpalamanian", "sun-eaters" = "Sun-Eater", "synriannaquians" = "Synriannaquian", "talokites" = "Talokite", "talokians" = "Talokite", "talynians" = "Talynian", "tamareneans" = "Tamaranean", "tamaraneans" = "Tamaranean", "tamojoranians" = "Tamojoranian", "tanjentans" = "Tanjentan", "tartarians" = "Tartarian", "tchk-tchks" = "Tchk-Tchk", "teallians" = "Teallian", "terminans" = "Terminan", "terrans" = "Terran", "thanagar" = "Thanagarian", "thanagarians" = "Thanagarian", "tharrians" = "Tharrian", "tharr" = "Tharrian", "tigers" = "Tiger", "tigres" = "Tiger", "tigre" = "Tiger", of myth" = "Titans of Myth", of myth" = "Titans of Myth", "titan" = "Titanian", "titanan" = "Titanian", "toomeyans" = "Toomeyan", "tormocks" = "Tormock", "tortugans" = "Tortugan", "trees" = "Tree", "trewskians" = "Trewskian", "tritonians" = "Tritonian", mammoths" = "Trogkian Mammoth", "trommites" = "Trommite", "tront" = "Trontian", "trontians" = "Trontian", "tsauronians" = "Tsauronian", "turtles" = "Turtle", "tyrrazians" = "Tyrrazian", "ungara" = "Ungaran", "unicorns" = "Unicorn", "unmen" = "Un-Man", "unman" = "Un-Man", men" = "Un-Man", man" = "Un-Man", "un-man" = "Un-Man", "un-manian" = "Un-Man", "uxorians" = "Uxorian", "uxor" = "Uxorian", "valeronians" = "Valeronian", "valkyries" = "Valkyrie", "vampire" = "Vampire", "vampires" = "Vampire", "van'nians" = "Van'nian", "varidians" = "Varidian", "varvan" = "Varvans", "venegarians" = "Venegarian", "venturans" = "Venturan", "venturians" = "Venturan", "venusians" = "Venusian", "venerians" = "Venusian", "volkregians" = "Volkregian", "voranians" = "Voranian", "vornians" = "Vornian", "vulcans" = "Vulcan", "vuldarians" = "Vuldarian", "vyrgans" = "Vyrgan", "weasels" = "Weasel", "werewolf" = "Werewolf", "wherewolf" = "Werewolf", "wherewolves" = "Werewolf", "werewolves" = "Werewolf", "whales" = "Whale", martians" = "White Martian", "winathians" = "Winathian", "wolves" = "Wolf", "xanshan" = "Xanshian", "xanthuans" = "Xanthuan", "xarapions" = "Xarapion", "xardans" = "Xardan", "xenusians" = "Xenusian", "xibalbans" = "Xibalban", "xudarians" = "Xudarian", yodix" = "Yodix", "youngenians" = "Youngenian", "zadronians" = "Zadronian", "zamarons" = "Zamaron", "zambaii" = "Zambaii", "zarolatts" = "Zarolatt", "zaronians" = "Zaronian", "zaroxians" = "Zaroxian", "zeroxians" = "Zeroxian", "zezzites" = "Zezzite", "zoans" = "Zoan", "zombies" = "Zombie", "zsiglonians" = "Zsiglonian", "zuunians" = "Zuunian", "zwenians" = "Zwenian", "zymians" = "Zymian" } race_table = { "valid" = valid, "substitutes" = substitutes } ---------------------------- -- Libraries of functions -- ---------------------------- -- stands for High Frequency local HF = require('Module:ComicsHF') -- Parses invocation parameters, trims whitespace, and removes blanks. local getArgs = require('Dev:Arguments').getArgs -- Gives the name of the current page. It's expensive, so we only do it once. -- The _G then makes it global, available to all page functions. _G.vars = { Pagename = mw.title.getCurrentTitle().text } ---------------------------------------------------------- -- Public functions (called from a Template or article) -- ---------------------------------------------------------- -- There is no standalone template, so no public functions. -------------------------------------------------------- -- Internal functions (used in this and other Modules -- -------------------------------------------------------- function valid:in_database( name ) if type( self[ name ] ) 'string' then return true else return nil end end function valid:pluralize( name ) if self:in_database ( name ) then return selfname else -- Brute force method of making a singular plural name = name:gsub( 's$', 'es' ) name = name:gsub( 'x$', 'es' ) name = name:gsub( 'z$', 'es' ) name = name:gsub( 'ch$', 'es' ) name = name:gsub( 'sh$', 'es' ) name = name:gsub( 'y$', 'ies' ) name = name:gsub( 'f$', 'ves' ) name = name:gsub( 'fe$', 'ves' ) name = name:gsub( '^s$', '%1s' ) return name end end function valid:link( race ) return HF.CategoryLink( self:pluralize(race), vars.Pagename, race ) end function substitutes:in_list( name ) if type( self[ string.lower( name ) ] ) 'string' then return true else return nil end end function substitutes:sub( name ) if self:in_list( name ) then return self[ string.lower( name ) ] else return nil end end function substitutes:link( name ) return HF.CategoryLink( validname, vars.Pagename, name ) end function race_table._Race( field, vars ) local output = '' local o = {} -- Check for multiple values separated with commas local values = HF.explode( ',', field.Value ) for i, v in ipairs( values ) do v = HF.trim( v ) if valid:in_database( v ) then -- Check if it's a valid race with a plural form. -- If yes - add category links table.insert(o, valid:link( v ) ) elseif substitutes:sub( v ) then -- If it's not valid, check for a direct substitution -- If there's one in the database, use the corrected one table.insert(o, valid:link( substitutes:sub( v ) ) ) elseif string.match( v, '%[%.*%%]' ) then -- If it's already a link, leave it alone. table.insert(o, v) else -- 3. If no substitution is found -- fallback to a common grammar rules -- and add a page to a Category:Needs valid race table.insert( o , valid:link( v ) .. HF.Category( "Needs valid race", vars.Pagename ) ) end end -- If Value2 or ValueRef is provided -- concatenate them to the output if not HF.isempty( field.Value2 ) then output = output .. " " .. field.Value2 end if not HF.isempty( field.ValueRef ) then output = output .. " " .. field.ValueRef end return table.concat(o, ' · ') .. output end ------------------------------------------------- -- Output (send it back to whatever called it) -- ------------------------------------------------- return race_table